程式碼如何執行 (斜線部分為 JavaScript Enngine)
Code -> Parser (Abstract Syntax Tree 抽象語法樹)
-> Conversion to Machine Code (Machine Code 機器語言) -> Runs
執行環境(Execution Context) 儲存變數以及程式執行的環境
第一個(預設)建立的執行環境:全域執行環境(Global execution context)
執行環境建立過程 :
Creation Phase 創造階段
Execution Phase 執行階段
由上往下、逐行執行程式碼(跳過函式裡的內容)
如果無任何呼叫函式 -> 只會創建 全域執行環境
Hoisting 存於全域執行環境概念
Function -> 已宣告,但內容未讀
Variable -> 已宣告,尚為 undefined
範例:
var name = 'sui'; // Global execution context
function first(){ // Global execution context
var age = 22; // Execution context first()
second(); // Execution context second()
}
function second(){ // Global execution context
var isMarried = false; Execution context second()
}
function first() // Execution context first()
在以上程式碼中,創立了3個執行環境,形成 執行堆疊 (Execution stack)
Execution context second()
Execution context first()
Global execution context
而在 second() 執行完後,執行堆疊則會呈現為
Execution context first()
Global execution context
以此類堆,return 後 執行環境自動 pop 掉,最後剩下全域執行環境
今天內容主要為一些了解一些較底層的概念,明天進入實作~
新手練功中, 歡迎指教、點評~
課程 : https://www.udemy.com/course/the-complete-javascript-course/
來源 : https://medium.com/%E9%AD%94%E9%AC%BC%E8%97%8F%E5%9C%A8%E7%A8%8B%E5%BC%8F%E7%B4%B0%E7%AF%80%E8%A3%A1/%E6%B7%BA%E8%AB%87-javascript-%E5%9F%B7%E8%A1%8C%E7%92%B0%E5%A2%83-2976b3eaf248